解决matplotlib警告问题:“Support for FigureCanvases without a required 您所在的位置:网站首页 matplotlib 动画 解决matplotlib警告问题:“Support for FigureCanvases without a required

解决matplotlib警告问题:“Support for FigureCanvases without a required

2023-06-20 01:47| 来源: 网络整理| 查看: 265

警告内容

在用matplotlib进行绘图时出现如下警告:

MatplotlibDeprecationWarning: Support for FigureCanvases without a required_interactive_framework attribute was deprecated in Matplotlib 3.6 and will be removed two minor releases later.

原始代码

这里我是想对digits数据集进行PCA降维,并想绘图查看降维效果,结果出现了开头的警告,但是可以画出图来,于是我查了一下,发现是版本问题。

from sklearn import datasets import matplotlib.pyplot as plt # 加载数据 data = datasets.load_digits() import numpy as np # 数据划分x/y x=data.data y=data.target # 直接调用sklearn的主成分分析函数 from sklearn.decomposition import PCA pca = PCA(n_components=2) newdata = pca.fit_transform(x,y) # 利用主成分分析步骤计算 n = 2 # 确定降维维数 mean = np.mean(x,axis=0) # 按列取平均 norm_data = x - mean # 均值归一化 cov = np.cov(norm_data,rowvar=False) # 计算协方差矩阵,每一列代表一个特征 evalue , evector = np.linalg.eig(cov) # 计算特征值和特征向量 index = np.argsort(evalue) #特征值从大到小排序,index为对应下标 n_index = index[-n:] n_vec = evector[:,n_index] # 取最大的n维特征值对应的特征向量构成映射P矩阵 newdata1 = np.dot(norm_data, n_vec) x0 = newdata[y == 0] x1 = newdata[y == 1] x2 = newdata[y == 2] x3 = newdata[y == 3] x4 = newdata[y == 4] x5 = newdata[y == 5] x6 = newdata[y == 6] x7 = newdata[y == 7] x8 = newdata[y == 8] x9 = newdata[y == 9] plt.scatter(x0[:, 0], x0[:, 1], c = "red", marker='o') plt.scatter(x1[:, 0], x1[:, 1], c = "green", marker='o') plt.scatter(x2[:, 0], x2[:, 1], c = "blue", marker='o') plt.scatter(x3[:, 0], x3[:, 1], c = "m", marker='o') plt.scatter(x4[:, 0], x4[:, 1], c = "yellow", marker='o') plt.scatter(x5[:, 0], x5[:, 1], c = "cyan", marker='o') plt.scatter(x6[:, 0], x6[:, 1], c = "black", marker='o') plt.scatter(x7[:, 0], x7[:, 1], c = "white", marker='o') plt.scatter(x8[:, 0], x8[:, 1], c = "purple", marker='o') plt.scatter(x9[:, 0], x9[:, 1], c = "brown", marker='o') plt.tight_layout() plt.show()

解决办法

网上一些博主写的降低版本啥的,我个人认为是有些麻烦,因此我在处理时直接切换后端:在代码的第二行后面加上一句plt.switch_backend('TkAgg')即可:

from sklearn import datasets import matplotlib.pyplot as plt plt.switch_backend('TkAgg')

除了TkAgg,还有别的后端,当然,不同的后端的使用也会有不同的要求,还需根据自己需求进行调整。

1. Agg:使用反走样技术生成PNG图像。 2. GTK3Agg:使用GTK3库在GTK3应用程序中渲染绘图。 3. QtAgg:使用Qt库在Qt应用程序中渲染绘图。 4. WXAgg:使用wxPython库在wxWidgets应用程序中渲染绘图。 5. MacOSX:在Mac OS X系统中使用内置的渲染器渲染绘图。 6. WebAgg:将绘图保存为HTML页面,可以在Web浏览器中查看。 7. SVG:将绘图保存为SVG矢量图像。

更改之后运行就不会出现警告了。

TkAgg:

 WebAgg:



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有